//
//  DWJUersAccountTools.swift
//  weibo
//
//  Created by 代伟佳 on 16/4/21.
//  Copyright © 2016年 代伟佳. All rights reserved.
//

import UIKit

class DWJUersAccountTools: NSObject {

    // 全局访问点 单例
    static let sharedTools:DWJUersAccountTools = DWJUersAccountTools()
    
    // 路径
    let path = (NSSearchPathForDirectoriesInDomains(.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString).stringByAppendingPathComponent("userAccount.archiver")
    
    
    var isLogin: Bool {
    
        if access_token != nil {
        
            return true
        } else {
        
            return false
        }
    }
    
    //访问令牌
    var access_token: String? {
    
        if userAccount?.access_token != nil {
        
            // 已经保存了用户数据了 但是要看访问令牌是否过期 
            if !isExpires {
                
                // 没有过期
                return userAccount?.access_token
                
            } else {
            
                // 访问令牌过期了
                return nil
                
            }
            
        } else {
            
            // 当我们第一次登录 没有保存数据 所以应该返回nil
            return nil
        }
    }
    
    // 判断我们的访问令牌是否过期
    var isExpires: Bool{
    
        // 获取我们的过期时间 和 当前时间比对
        let date = userAccount?.expires_date
        
        // 降序
        if date?.compare(NSDate()) == NSComparisonResult.OrderedDescending {
        
            return false
        } else {
        
            return true
        }
        
    }
    
    // 用户信息
    var userAccount: DWJUserAccount?
    
    override init() {
        
        super.init()
        userAccount = getUserAccount()
    }
    
    // 保存数据
    func saveUserAccount(account: DWJUserAccount) {
        
        // 保存数据的时候 先给userAccount赋值
        userAccount = account

        NSKeyedArchiver.archiveRootObject(account, toFile: path)
    }
    
    // 读取数据
    func getUserAccount() -> DWJUserAccount?{

        let reslut = NSKeyedUnarchiver.unarchiveObjectWithFile(path) as? DWJUserAccount
        
        return reslut
    }
    
    
}
